package com.young.design.pattern.proxy.staticproxy;

/**
 * @ClassName : ProxyDesignMode
 * @Author : hyy
 * @Date: 2020-03-19
 *
 * 代理模式，也叫委托模式，是为某一个对象提供一个代理对象，并由代理对象控制对原对象的访问，代理模式通俗来讲就是中介
 *  角色分类：
 *      1、抽象主题角色（Subject）：可以是抽象类，也可以是接口，是一个普通的业务类型，没有特殊的要求
 *      2、真实主题角色（realSubject）: 也叫委托角色或者被代理角色，是业务逻辑的具体执行者、
 *      3、代理主题角色（Proxy）: 也叫代理类或者委托类，主要负责对真实角色的应用，
 *          把抽象主题类定义的方法委托给真实角色实现，并在具体主题角色处理完毕前后做做预处理和善后工作
 *  一个代理类，可以代理多个被代理这，因此一个代理类具体雷利那个具体主题角色是由场景确定的，最简单的情况是一个主题类一个代理类，
 *  通常情况下，一个接口只需要一个代理类，具体代理那个实现类由高层模式决定
 *
 *  优点：
 *      职责清晰
 *          具体角色是实现具体的业务逻辑，不用关心其他非本职责的事务，通过后期的代理完成一件事务，代码清晰。
 *          在某些情况下，一个客户类不想或者不能直接引用一个委托对象，而代理类对象可以在客户类和委托对象之
 *          间起到中介的作用，其特征是代理类和委托类实现相同的接口。
 *
 *      高扩展性
 *          具体主题角色随时会发生变化，但是只要实现了接口，接口不变，代理类就可以不做任何修改继续使用，
 *          符合“开闭原则”。另外，代理类除了是客户类和委托类的中介之外，我们还可以通过给代理类增加额外
 *          的功能来扩展委托类的功能，这样做我们只需要修改代理类而不需要再修改委托类，同样符合开闭原则。
 *  使用场景：
 *  分类：
 *      静态代理
 *      动态代理
 *          jdk 动态代理
 *          cglib 动态代理
 *
 *

 */
public class ProxyDesignMode {
}
